package com.cr.business.mapper;

import com.cr.business.domain.TbUserBaseInfo;
import com.cr.business.domain.dto.UserReqDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户基本信息Mapper接口
 * 
 * @author tang
 * @date 2025-08-19
 */
public interface TbUserBaseInfoMapper
{
    /**
     * 查询用户基本信息列表
     *
     * @param dto 查询参数
     * @return 用户基本信息集合
     */
    List<TbUserBaseInfo> selectTbUserBaseInfoList(UserReqDto dto);

    /**
     * 批量删除用户基本信息
     *
     * @param userIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteTbUserBaseInfoByUserIds(String[] userIds);

    /**
     * 查询用户基本信息
     * 
     * @param userId 用户基本信息主键
     * @return 用户基本信息
     */
    TbUserBaseInfo selectTbUserBaseInfoByUserId(String userId);

    /**
     * 根据手机号查询用户
     * @param phone 手机号
     */
    TbUserBaseInfo selectUserByPhone(String phone);

    /**
     * 新增用户基本信息
     *
     * @param tbUserBaseInfo 用户基本信息
     * @return 结果
     */
    int insertTbUserBaseInfo(TbUserBaseInfo tbUserBaseInfo);

    /**
     * 修改用户基本信息
     *
     * @param tbUserBaseInfo 用户基本信息
     * @return 结果
     */
    int updateTbUserBaseInfo(TbUserBaseInfo tbUserBaseInfo);

    /**
     * 修改用户密码
     *
     * @param tbUserBaseInfo 用户信息
     * @return 结果
     */
    int updateUserPasswordByPhone(TbUserBaseInfo tbUserBaseInfo);

    /**
     * 删除用户基本信息
     *
     * @param userId 用户基本信息主键
     * @return 结果
     */
    int deleteTbUserBaseInfoByUserId(String userId);

    /**
     * 修改用户头像
     * @param userId 用户ID
     * @param avatar 用户头像
     */
    int updateUserAvatar(@Param("userId") String userId, @Param("avatar") String avatar);

    /**
     *
     * @param userId 用户ID
     * @param nickName 昵称
     */
    int updateUserNickName(@Param("userId") String userId, @Param("nickName") String nickName);

    /**
     * 初始化用户实名状态
     */
    int initUserAuthStatus(String[] entityIds);
}
